#-*- coding: UTF-8 -*-
from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember
from pyramid.security import forget




from scp.modelo.models import DBSession
from scp.modelo.Usuario import Usuario
from scp.modelo.Rol import Rol
from scp.modelo.Permiso import Permiso

from pyramid.response import Response
from pyramid.view import view_config
import json

import re

#@view_config(renderer='json')
def roles(request):

	print ">>>>>>>>>>>>>Controlador de Roles - Inicio>>>>>>>>>>>>>>"
	print "request:"
	print request

	print 'metodo:'
	
	methodRequest = request.method
	print methodRequest
	
	print 'request.url:'
	
	print request.url
	
	
	dicParametros = request.matchdict
	
		
	print "parametros abajo..."
	print request.params
	
	print 'request.body'
	print request.body 
	

	print "operación"
	print dicParametros.get('operacion')
	print "operación"
	
	
	if dicParametros.get('operacion') == 'update' or dicParametros.get('operacion') == 'create':
		print 'entre el if de update'
		
		print 'json.loads(request.params[rol])'
		rol = json.loads(request.params['rol'])
		print json.loads(request.params['rol'])
		print 'rol.data'
		rolData = rol.get('data')
		print rol.get('data')
		print 'rol.data.nombreRol'
		print rolData.get('nombreRol')
		print 'json.loads(request.params[ids_permisos])'
		permisos = json.loads(request.params['ids_permisos'])
		print permisos
	
	print 'dicParametros.get(operacion).find(?):' 
	print dicParametros.get('operacion').find('?')
	
	session = DBSession()
	if dicParametros.get('operacion') == 'view' and request.url.find('?') == -1:
		print 'respondí un diccionario normal'
		return {'content':'Hello!'}	
	elif dicParametros.get('operacion') == 'view':
		rolesAll = session.query(Rol).all()
		
		print '>>rolesAll'
		print rolesAll
		
		rolesArray = []
		for rolIter in rolesAll:
			aux = {'idRol': rolIter.id, 'nombreRol': rolIter.nombre, 'descripRol':'laDescripcion'}
			rolesArray.append(aux)
		
		print '>>rolesArray'
		print rolesArray
			
		responseView = Response()
		#responseView.body = json.dumps(dict(success = True, roles = [{'idRol':'1', 'nombreRol': 'hola', 'descripRol':'mundo'}, {'idRol':'2', 'nombreRol': 'chau', 'descripRol':'mundo'}]))
		responseView.body = json.dumps(dict(success = True, roles = rolesArray))
		responseView.content_type = 'application/json'
		print 'respondí con un Responseeeee!!!'
		return responseView
	elif dicParametros.get('operacion') == 'create':
		
		
		rol = Rol()
		rol.nombre = rolData.get('nombreRol')
		
		permisosArray = []
		
		for idPermiso in permisos:
			permiso = session.query(Permiso).filter_by(id=idPermiso).first()
			permisosArray.append(permiso)
		
				
		rol.permisos =  permisosArray
		session.add(rol)		
		responseCreate = Response()
		responseCreate.body = json.dumps(dict(success = True))
		responseCreate.content_type = 'application/json'
		return responseCreate	
	elif dicParametros.get('operacion') == 'update':
		print 'entre en el if de update'
		responseUpdate = Response()
		responseUpdate.body = json.dumps(dict(success = True))
		responseUpdate.content_type = 'application/json'
		return responseUpdate	
	elif dicParametros.get('operacion') == 'destroy':
		print 'entre en el if de update'
		
		idRolEliminar = json.loads(request.params['param_idRol'])
		rolEliminar = session.query(Rol).filter_by(id=idRolEliminar).first()
		
		session.delete(rolEliminar)
		
		responseDestroy = Response()
		responseDestroy.body = json.dumps(dict(success = True))
		responseDestroy.content_type = 'application/json'
		return responseDestroy	
 
